// HEAD YieldCurve_BondYTMCurve H
/*==================================================================================================================
                  Copyright (C) 2013 SUMSCOPE L.P.
                  ALL RIGHTS RESERVED 
====================================================================================================================
File description:
    Base class for Bond YTM Curve
====================================================================================================================
...Date      Name                                  Description of Change
15-Apr-2013  James Xu                              Initial version
13-May-2013  James Xu                              Restructure this class
03-Jun-2013  James Xu                              Rename GetYTM to GetYield
$HISTORY$
===================================================================================================================*/

#ifndef YC_BOND_YTM_CURVE_H
#define YC_BOND_YTM_CURVE_H

#include "BondDataStructure.h"
#include <vector>
#include "utility.h"

namespace YieldCurve
{
    // ----------------------------------------------------------------------------------------
    // -------------- BondYieldCurve class- ----------------------------------------
    // ----------------------------------------------------------------------------------------
    class BondYieldCurve
    {
    public:
        
        BondYieldCurve(const std::vector<YieldPoints>& curveKnots);
        
        virtual ~BondYieldCurve(void);

    public:
        // Return the YTM of a given TTM on the yield curve.
        virtual double GetYield(double t) = 0;

    protected:
        // Curve Knots 
        std::vector<YieldPoints> knots_; 
    
    };

}

#endif